package org.datastructure.firstday.tree;

public class BinaryTree {
    private HeroNode root;

    public void setRoot(HeroNode root) {
        this.root = root;
    }

    /**
     * 删除节点
     *  如果节点是叶子节点就删除
     *  如果是子树，就删除该子树
     * @param no
     */
    public void delHero(int no) {
        if (this.root != null) {
            if (this.root.getId() == no) {
                root = null;
                return;
            } else {
                this.root.delHero(no);
            }
        } else {
            System.out.println("此树为空，不能完成删除操作");
        }
    }


    public void preOrder() {
        if (this.root != null) {
            this.root.preOrder();
        }
    }

    public void infixOrder() {
        if (this.root != null) {
            this.root.infixOrder();
        }
    }

    public void postOrder() {
        if (this.root != null) {
            this.root.postOrder();
        }
    }

    public HeroNode preOrderSearch(int no) {
        if (root != null) {
            return root.preOrderSearch(no);
        } else {
            return null;
        }
    }

    public HeroNode infixOrderSearch(int no) {
        if (root != null) {
            return root.infixOrderSearch(no);
        } else {
            return null;
        }
    }

    public HeroNode postOrderSearch(int no) {
        if (root != null) {
            return root.postOrderSearch(no);
        } else {
            return null;
        }
    }

}
